package FileCoding.Exa1_2;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * 扫描获取指定类型的文件集合（只能单层查询）
 */
public class CoreCoding {

    public static void main(String[] args) {
        Object[] result = listFiles(new File("Java动手做一做"),"png");
        assert result != null;
        for (Object file:result){
            File file1=(File)file;
            System.out.println(file1.getName());
        }
    }

    /**
     * 显示文件夹中的文件
     * @param dir 文件夹路径
     * @param extName 文件后缀(文件类型)
     * @return
     */
    private static Object[] listFiles(File dir,String extName) {
        List<File> fileList=new ArrayList<>();
        if (dir == null)
            return null;
        //检查传入的dir是否是路径，
        // 如果不是则直接返回null
        if(!dir.isDirectory()){
            return null;
        }
        //获取目录下所有的文件的数组
        File[] files = dir.listFiles();
        //遍历文件数组
        for (File file : files) {
            if(accept(file,extName)){
                fileList.add(file);
            }
        }
        return fileList.toArray();
    }

    /**
     *
     * @param pathname
     * @param extName
     * @return
     */
    public static boolean accept(File pathname,String extName) {
        // 获取用户设置的指定扩展名
        if (extName == null || extName.isEmpty())
            return false;
        //在后缀前面加一个.
        if (!extName.startsWith("."))
            extName = "." + extName;
        //如果存在大写字母，则转换为小写的
        extName = extName.toLowerCase();
        // 判断扩展名与过滤文件名是否符合要求
        return pathname.getName().toLowerCase().endsWith(extName);
    }


}
